// 一个模块在定义的时候要以来别的模块，那就再define这里加上数组引入就相当于require了
// jquery也是一个满足AMD规范的模块
define(['jquery','utils'], ($) => {
    class Header {
        constructor () {
            this.loadHTML().then(() => {
                this.calcCartTotal()
                this.login()
                this.search()
            })
            
            
        }
        
        search(){
            $('#search').focus(function(){
                $('#new-search').show()
            }).blur(function(){
                $('#new-search').hide()
            })
            
        }
        loadHTML () {
            // 在这里把方法封装成一个promise，这样就可以在构造函数里处理加载成功之后的逻辑，来调用其他方法
            return new Promise(resolve => {
                // $('header').load('/html/modules/header.html', () => {
                //     resolve()
                // })
                $('header').load('/html/modules/header.html', resolve)
            })
        }
        calcCartTotal () {
            // 计算购物车总数量
            let count = 0
            let cart = localStorage.getItem('cart')
            if (cart) {
                cart = JSON.parse(cart)
                count = cart.reduce((total, shop) => total + shop.count, 0)
            }
            $('#shopnum').html(count)
            $('#cart').html(count)
        }
        login(){
            if(this.getCookie('loginUser')){
                $('#unLogin').hide()
                $('#isLogin').show()
                $('#user-name').html(this.getCookie('loginUser'))
                $('#logout').on('click',function(){
                    document.querySelector('#logout').onclick = function () {
                        if (confirm('确定要退出吗？')) {
                            // 删除cookie
                            utils.setCookie('loginUser', '', { expires: -1 })
                            $('#unLogin').show()
                            $('#isLogin').hide()
                        }
                    }
                } ) 
            }
        }
        getCookie () {
            var str = document.cookie
            var arr = str.split('; ')
            var cookies = arr.reduce((obj, item) => {
                var subArr = item.split('=')
                obj[subArr[0]] = decodeURIComponent(subArr[1])
                return obj
            }, {})
            return cookies['loginUser']
        }
       
    }
    return new Header()
})
